package com.ethan.blog.service;

import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ethan.blog.pojo.entity.User;

/**
 * 用户表;(user)表服务接口
 *
 * @author : Ethan
 * @date : 2024-5-24
 */
public interface UserService extends IService<User> {

    /**
     * 指定账号、电话、或者邮箱查询用户
     * @param SFunctionType 获取账号、电话、或者邮箱的函数类型
     * @param account 账号、电话、或者邮箱
     * @return 返回用户信息，如果查询不到，返回空
     */
    <T> User getByAll(SFunction<User, T> SFunctionType, T account);
    /**
     * 增加用户
     *
     * @param user
     */
    Boolean insertUser(User user);

    /**
     * 通过账号、手机号或邮箱查询用户
     *
     * @param accountOrPhoneNumberOrEmail
     * @return 用户信息
     */
    User getByAll(String accountOrPhoneNumberOrEmail);

    /**
     * 更新用户信息
     *
     * @param user
     */
    boolean updateUser(User user);

    /**
     * 删除用户（set deleted = 1）
     *
     * @param id
     * @return
     */
    Boolean delete(Long id);

    /**
     * 通过id修改密码
     *
     * @param id
     * @param newPassword
     * @return 是否修改成功
     */
    boolean updatePwd(Long id, String newPassword);
}